#基础测试
    curl 'http://localhost:9200/?pretty'	#查看是否启动
	curl -XPOST 'http://localhost:9200/_shutdown'	#关闭机器
	GET /_cluster/health	#集群健康状态
    curl -XGET 'http://localhost:8200/_cluster/health/zh?pretty' #zh库集群状态
    curl -XGET 'http://localhost:8200/_cluster/stats?pretty'  #集群统计信息
	PUT /blogs/_settings {"number_of_replicas" : 2}	#设置复制分片的数量

#添加索引
#只分配3个主分片和一个复制分片
    PUT /blogs
    {
       "settings" : {
          "number_of_shards" : 3,
          "number_of_replicas" : 1
       }
    }

#检索多个文档
    POST /_mget
    {
       "docs" : [
          {
             "_index" : "website",
             "_type" :  "blog",
             "_id" :    2
          },
          {
             "_index" : "website",
             "_type" :  "pageviews",
             "_id" :    1,
             "_source": "views"
          }
       ]
    }

#同一个文档的多个类型所属
    POST /website/blog/_mget
    {
       "docs" : [
          { "_id" : 2 },
          { "_type" : "pageviews", "_id" :   1 }
       ]
    }
    或者
    POST /website/blog/_mget
    {
       "ids" : [ "2", "1" ]
    }

#批量增删改，末尾一定要换行，控制结果再5-15M左右，效果最好
    POST /_bulk
    { "delete": { "_index": "website", "_type": "blog", "_id": "123" }}
    { "create": { "_index": "website", "_type": "blog", "_id": "123" }}
    { "title":    "My first blog post" }
    { "index":  { "_index": "website", "_type": "blog" }}
    { "title":    "My second blog post" }
    { "update": { "_index": "website", "_type": "blog", "_id": "123", "_retry_on_conflict" : 3} }
    { "doc" : {"title" : "My updated blog post"} }
    #任何一个请求失败，顶层的error标记将被设置为true

#路由文档到分片
    shard = hash(routing) % number_of_primary_shards
    routing值是一个任意字符串，它默认是_id但也可以自定义。这个routing字符串通过哈希函数生成一个数字
    然后除以主切片的数量得到一个余数(remainder)，余数的范围永远是0到number_of_primary_shards - 1，
    这个数字就是特定文档所在的分片，默认主分片是5.

    这也解释了为什么主分片的数量只能在创建索引时定义且不能修改：如果主分片的数量在未来改变了
    所有先前的路由值就失效了，文档也就永远找不到了

    有时用户认为固定数量的主分片会让之后的扩展变得很困难。现实中，有些技术会在你需要的时候让扩展变得容易。我们将在《扩展》章节讨论。
